অ্যাপাচি অ্যান্ট (Apache ANT) বিল্ড স্ক্রিপ্টের কার্যকারিতা বাড়াতে এবং সময় সাশ্রয় করতে ফ্লো অপ্টিমাইজেশন অত্যন্ত গুরুত্বপূর্ণ। একটি সঠিকভাবে অপ্টিমাইজড বিল্ড স্ক্রিপ্ট দ্রুত এবং কার্যকর বিল্ড প্রসেস নিশ্চিত করে, যা বড় প্রজেক্টে বিশেষভাবে সহায়ক।
ANT-এর target
গুলোতে নির্ভরশীলতার সঠিক কনফিগারেশন নিশ্চিত করুন। একটি নির্ভরশীল টার্গেট একাধিকবার চালানো বিলম্ব সৃষ্টি করতে পারে। depends
অ্যাট্রিবিউট ব্যবহার করে নির্ভরশীল টার্গেট উল্লেখ করুন।
<target name="clean">
<delete dir="build" />
</target>
<target name="compile" depends="clean">
<mkdir dir="build" />
<javac srcdir="src" destdir="build" />
</target>
<target name="package" depends="compile">
<jar destfile="build/app.jar" basedir="build" />
</target>
পুরো প্রজেক্ট পুনরায় বিল্ড করার পরিবর্তে শুধুমাত্র পরিবর্তিত ফাইলগুলো কম্পাইল করুন।
<target name="compile">
<javac srcdir="src"
destdir="build"
includes="**/*.java"
update="true" />
</target>
update="true"
: ইতিমধ্যেই কম্পাইল হওয়া ফাইল বাদ দিয়ে কেবলমাত্র পরিবর্তিত ফাইল কম্পাইল করে।বারবার ব্যবহার হওয়া ভ্যালুগুলো সরাসরি স্ক্রিপ্টে উল্লেখ না করে property হিসেবে সংজ্ঞায়িত করুন।
<property name="src.dir" value="src" />
<property name="build.dir" value="build" />
<property name="jar.file" value="build/app.jar" />
<target name="compile">
<javac srcdir="${src.dir}" destdir="${build.dir}" />
</target>
<target name="package" depends="compile">
<jar destfile="${jar.file}" basedir="${build.dir}" />
</target>
macrodef
বা import
ব্যবহার করুন।বড় প্রজেক্টে নির্ভরশীলতাহীন টার্গেটগুলো সমান্তরালে (parallel) চালানো সময় সাশ্রয়ী হতে পারে।
<parallel>
<antcall target="compile" />
<antcall target="test" />
</parallel>
বিল্ড প্রসেসে অপ্রয়োজনীয় ফাইল বা ডিরেক্টরি অন্তর্ভুক্ত করলে সময় ও মেমোরি বেশি ব্যবহৃত হয়। exclude
প্যাটার্ন ব্যবহার করে এই ফাইলগুলো বাদ দিন।
<fileset dir="src">
<include name="**/*.java" />
<exclude name="**/test/**" />
</fileset>
অপ্রয়োজনীয় লগ আউটপুট সময় নষ্ট করতে পারে। লগ লেভেল নির্ধারণ করুন এবং দরকার হলে record
টাস্ক ব্যবহার করে লগ ফাইল সংরক্ষণ করুন।
<record name="build.log" action="start" loglevel="info" />
<record name="build.log" action="stop" />
error
: শুধুমাত্র ত্রুটি।info
: সাধারণ তথ্য।debug
: বিস্তারিত তথ্য।ANT নিজে থেকে ডিপেনডেন্সি ম্যানেজমেন্ট সাপোর্ট করে না। এর জন্য ivy
বা অন্য লাইব্রেরি ম্যানেজমেন্ট টুল ব্যবহার করুন।
<ivy:retrieve />
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
বড় স্ক্রিপ্টকে ছোট ছোট ভাগে ভেঙে পুনঃব্যবহারযোগ্য বানান।
<import file="common-tasks.xml" />
<target name="build" depends="common-clean, common-compile">
<echo message="Project build completed!" />
</target>
পরীক্ষার জন্য নির্ধারিত ফাইল এবং মডিউল চালানোর সময় ফোকাস করুন।
<junit printsummary="true">
<classpath>
<pathelement location="lib/junit.jar" />
</classpath>
<test name="com.example.MyTest" />
</junit>
বারবার ব্যবহৃত টাস্কগুলোর জন্য কাস্টম টাস্ক বা ম্যাক্রো ডিফিনিশন তৈরি করুন।
<macrodef name="clean-compile">
<attribute name="src" />
<attribute name="dest" />
<sequential>
<delete dir="@{dest}" />
<mkdir dir="@{dest}" />
<javac srcdir="@{src}" destdir="@{dest}" />
</sequential>
</macrodef>
<target name="build">
<clean-compile src="src" dest="build" />
</target>
<project name="OptimizedBuild" default="package">
<property name="src.dir" value="src" />
<property name="build.dir" value="build" />
<property name="jar.file" value="build/app.jar" />
<target name="clean">
<delete dir="${build.dir}" />
</target>
<target name="compile" depends="clean">
<mkdir dir="${build.dir}" />
<javac srcdir="${src.dir}" destdir="${build.dir}" includes="**/*.java" />
</target>
<target name="package" depends="compile">
<jar destfile="${jar.file}" basedir="${build.dir}" />
</target>
</project>
অ্যাপাচি অ্যান্ট বিল্ড স্ক্রিপ্ট অপ্টিমাইজ করার মাধ্যমে সময় ও রিসোর্স সাশ্রয় করা যায়। উপযুক্ত টার্গেট নির্ধারণ, ডিপেনডেন্সি সঠিকভাবে সাজানো, এবং পুনঃব্যবহারযোগ্য টাস্ক তৈরির মাধ্যমে ANT স্ক্রিপ্টের কার্যকারিতা বাড়ানো সম্ভব। এর ফলে বড় প্রজেক্টও সহজে এবং দ্রুত পরিচালিত হয়।
common.read_more